<?php

class PeopleController extends AppController {

    var $name = 'People';
    var $uses = array('Person', 'User', 'Client', 'Turn', 'Agenda', 'Tag', 'PeopleProblem', 'ClientsPerson', 'InsurancesPerson', 'Insurance', 'Sign', 'Stateproblem', 'Typeindicacionmedicamento');

//	var $actsAs = array('Acl' => array('type' => 'controlled'));
//	var $cacheAction = false;

    function beforeFilter() {
        parent::beforeFilter();

        // Aplico el Layout segun la Vista o si es AJAX
        if ($this->RequestHandler->isAjax()) {
            $this->layout = 'ajax';
        } else {
            // Cambio la Vista por la del Rol
            $this->layout = strtolower($this->Session->read('VistaActual'));
        }
    }

    function view($id = null, $tab_activa = null, $turno_id = 0) {

        $this->_accede('accede_hce');

        $evoluciona_problemas = $this->_accede('evoluciona_problemas', 'retorna');
        $this->set('evoluciona_problemas', $evoluciona_problemas);

        $asocia_medicamentos_paciente = $this->_accede('asocia_medicamentos_paciente', 'retorna');
        $this->set('asocia_medicamentos_paciente', $asocia_medicamentos_paciente);

        $asocia_signos_vitales_paciente = $this->_accede('asocia_signos_vitales_paciente', 'retorna');
        $this->set('asocia_signos_vitales_paciente', $asocia_signos_vitales_paciente);

        $asocia_archivos_paciente = $this->_accede('asocia_archivos_paciente', 'retorna');
        $this->set('asocia_archivos_paciente', $asocia_archivos_paciente);

        $asocia_practicas = $this->_accede('asocia_practicas', 'retorna');
        $this->set('asocia_practicas', $asocia_practicas);

        $asocia_financiador_consulta = $this->_accede('asocia_financiador_consulta', 'retorna');
        $this->set('asocia_financiador_consulta', $asocia_financiador_consulta);

        $asocia_resultados_paciente = $this->_accede('asocia_resultados_paciente', 'retorna');
        $this->set('asocia_resultados_paciente', $asocia_resultados_paciente);

        $exporta_datos = $this->_accede('exporta_datos', 'retorna');
        $this->set('exporta_datos', $exporta_datos);




        $this->Person->recursive = 0;
        if (!$id) {
            $this->Session->setFlash(__('Invalid person', true));
            $this->redirect('/dashboards');
        }

        if (!$tab_activa) {
            $tab_activa = 3; // Evoluciones
        }

        $tags_paciente = $this->Person->PeopleProblem->find('all', array(
            'conditions' => array(
                'Person.id' => $id,
                'Tag.name <>' => "",
            ),
            'fields' => array('Problem.name', 'Tag.name'),
                ));

        $pro_pacientes = $this->Person->PeopleProblem->find('all', array(
            'conditions' => array(
                'PeopleProblem.person_id' => $id,
            ),
            'fields' => array('Problem.id', 'Problem.name'),
            'order' => array('Problem.name')
                ));
        $problemas_pacientes = array();
        if ($pro_pacientes) {
            foreach ($pro_pacientes as $pp) {
                $problemas_pacientes[$pp['Problem']['id']] = $pp['Problem']['name'];
            }
        }

        // Verifico que el Paciente corresponda al Cliente
        $valido_cliente = $this->Person->ClientsPerson->find('first', array(
            'conditions' => array(
                'ClientsPerson.person_id' => $id,
                'ClientsPerson.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
            ),
                ));

        if (!empty($valido_cliente)) {
            $datos_persona = $this->Person->read(null, $id);
        } else {
            exit;
        }

        // Traigo los Signos Vitales
        $signos_vitales = $this->Sign->find('all', array(
            'conditions' => array(
                'NOT' => array('Sign.id' => array('15'))
            ),
            'fields' => array('Sign.name', 'Sign.unidad', 'Sign.id', 'Sign.quick_list', 'Sign.min', 'Sign.max'),
            'order' => array('Sign.orden')
                ));
        $this->set('SignosVitales', $signos_vitales);

        $SignosVitalesQuick = array();
        foreach ($signos_vitales as $sv) {
            if ($sv['Sign']['quick_list'] == 1) {
                $SignosVitalesQuick[] = $sv;
            } //endif 
        } //endforeach
        $this->set('SignosVitalesQuick', $SignosVitalesQuick);

        // Traigo los StateProblems
        $state_problems = $this->Stateproblem->find('all', array(
            'order' => array('Stateproblem.name')
                ));
        $this->set('StateProblems', $state_problems);

        // Traigo los Tags para mostrar en el Evolucionador
        $tags = $this->Tag->find('all', array(
            'order' => array('Tag.name')
                ));
        $this->set('Tags', $tags);

        // Traigo los Typeindicacionmedicamento
        $Typeindicacionmedicamento = $this->Typeindicacionmedicamento->find('all', array(
            'order' => array('Typeindicacionmedicamento.name')
                ));
        $this->set('Typeindicacionmedicamento', $Typeindicacionmedicamento);

        // Traigo la unidad indicada
        $this->loadModel('Unidad');
        $Unidad = $this->Unidad->find('list', array(
            'fields' => array('Unidad.id', 'Unidad.agrupador'),
            'order' => array('Unidad.agrupador')
                ));
        $this->set('Unidad', $Unidad);


        // Traigo las vias de administracion
        $this->loadModel('Via');
        $Vias = $this->Via->find('all', array(
            'order' => array('Via.name')
        ));
        $this->set('Vias', $Vias);

        // Traigo las Frecuencias de administracion
        $this->loadModel('Frecuencia');
        $Frecuencias = $this->Frecuencia->find('all', array(
            'order' => array('Frecuencia.name')
        ));
        $this->set('Frecuencias', $Frecuencias);


        //------------------------------------------------ Vademecums de este cliente
        $VademecumsCliente = $this->Session->read('VademecumsCliente');
        $this->set('VademecumsCliente', $VademecumsCliente);







        // Calculo la Edad de la Persona
        $edad = $this->obtenerEdad($datos_persona['Person']['fecha_nacimiento']);
        $this->set('edad', $edad);

        // Obtengo las Obras Sociales del Paciente
        $options = array('conditions' => array('InsurancesPerson.person_id' => $id));
        $insurances_paciente = $this->InsurancesPerson->find('all', $options);
        $this->set('insurances_paciente', $insurances_paciente);
//		pr($insurances_paciente);
        //-------------------------------------------------------------------------------------------------------------------
        //---------------------------------------------------------------------------------- Obtengo Financiadores del medico
        //-------------------------------------------------------------------------------------------------------------------
        $id_user = $this->Session->read('Auth.User.id');
        $this->loadModel('InsurancesUser');
        $financiadores = $this->InsurancesUser->find('all', array(
            'conditions' => array(
                'InsurancesUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
                'InsurancesUser.user_id' => $id_user,
            ),
            'order' => array('InsurancesUser.insurance_id' => 'ASC', 'InsurancesUser.plan' => 'ASC')
                ));
        $this->set('financiadores', $financiadores);
//		pr($financiadores);
        //-------------------------------------------------------------------------------------------------------------------
        //-------------------------------------------------------------------------------------- Obtengo Productos del medico
        //-------------------------------------------------------------------------------------------------------------------
        $this->loadModel('ProductsUser');
        $productos = $this->ProductsUser->find('all', array(
            'conditions' => array(
                'ProductsUser.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
                'ProductsUser.user_id' => $id_user,
            )
                ));
        $this->set('productos', $productos);
//pr($productos);
        // Inicializo el Arreglo de OOSS
        $os = array();
        $x = 0;

        foreach ($insurances_paciente as $ip) {
            $arreglo_aux_ooss = $this->Insurance->read(null, $ip['InsurancesPerson']['insurance_id']);
            $os[$x]['ooss'] = $arreglo_aux_ooss['Insurance']['name'];
            $os[$x]['plan'] = $ip['InsurancesPerson']['nombre_plan'];
            $os[$x]['afiliado'] = $ip['InsurancesPerson']['nro_afiliado'];
            $x++;
        }
//pr($insurances_paciente);
        $this->set('ooss_paciente', $os);
        $this->set('person', $datos_persona);
        $this->set('tab_activa', $tab_activa);
        $this->set('problemas_pacientes', $problemas_pacientes);
        $this->set('tags_paciente', $tags_paciente);
        $this->set('turno_id', $turno_id);
        $this->set('doctores', $this->requestAction('/users/obtenerListadoDoctores/' . $this->Session->read('ClientesUsuarioLogueado.id')));
    }

    /*     * ********************************************************************** */
    /* Carga de un Paciente													   */
    /* El parametro id_turno se utiliza para convertir un paciente temporal	   */
    /* en uno definitvo														   */
    /*     * ********************************************************************** */

    function add($id_turno_paciente_tmp = null) {

        $this->_accede('carga_paciente');

        //---------------------------------------------------------------------------
        //                 Puedo seguir agregando pacientes, segun el plan elegido ??
        //---------------------------------------------------------------------------
        $this->loadModel('ClientsPlan');
        $client_id = $this->Session->read('ClientesUsuarioLogueado.id');


        $plan_vigente = $this->ClientsPlan->find('first', array(
            'conditions' => array(
                'ClientsPlan.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
                'ClientsPlan.activo' => 1
            ),
            'order' => array(
                'ClientsPlan.fecha_alta' => 'DESC'
            )
        ));
        if ($plan_vigente['ClientsPlan']['pacientes_actuales'] < $plan_vigente['Plan']['maximo_pacientes']) {
            $habilitado = true;
        } else {
            $habilitado = false;
            $this->Session->setFlash(__('No puede registrar más pacientes en el Plan actual. Favor de consultar por la actualización del Plan Actual.', true));
        }


        // Se declara al principio porque se usa también en la instancia 2
        $sexes = $this->Person->Sex->find('list');
        $typodocuments = $this->Person->Typodocument->find('list', array('order' => array('Typodocument.name')));

        if (!empty($this->data)) {

            // Valido que los Datos Ingresados estén correctos
            $this->Person->set($this->data);
            if ($this->Person->validates()) { // Si está todo Validado
                // Valido los campos ingresados
                if (!empty($this->data['Person']['name'])) {
                    $sql_nombre = " name:" . urlencode($this->data['Person']['name']);
                } else {
                    $sql_nombre = "";
                }

                if (!empty($this->data['Person']['name2'])) {
                    $sql_nombre2 = " name2:" . urlencode($this->data['Person']['name2']);
                } else {
                    $sql_nombre2 = "";
                }

                if (!empty($this->data['Person']['lastname'])) {
                    $sql_lastname = "lastname:" . urlencode($this->data['Person']['lastname']);
                } else {
                    $sql_lastname = "";
                }

                if (!empty($this->data['Person']['lastname2'])) {
                    $sql_lastname2 = " lastname2:" . urlencode($this->data['Person']['lastname2']);
                } else {
                    $sql_lastname2 = "";
                }

                if (!empty($this->data['Person']['fecha_nacimiento']['year']) AND ! empty($this->data['Person']['fecha_nacimiento']['month']) AND ! empty($this->data['Person']['fecha_nacimiento']['day'])) {
                    $sql_fecha_nacimiento = " fecha_nacimiento:" . urlencode($this->data['Person']['fecha_nacimiento']['year'] . "-" . $this->data['Person']['fecha_nacimiento']['month'] . "-" . $this->data['Person']['fecha_nacimiento']['day']);
                } else {
                    $sql_fecha_nacimiento = "";
                }

                if (!empty($this->data['Person']['typodocument_id'])) {
                    $sql_typodocument = " tipo_documento:" . urlencode($typodocuments[$this->data['Person']['typodocument_id']]);
                } else {
                    $sql_typodocument = "";
                }

                if (!empty($this->data['Person']['sex_id'])) {
                    $sql_sexo = " sexo:" . urlencode($sexes[$this->data['Person']['sex_id']]);
                } else {
                    $sql_sexo = "";
                }

                if (!empty($this->data['Person']['nro_documento'])) {
                    $sql_nro_documento = " nro_documento:" . urlencode($this->data['Person']['nro_documento']);
                } else {
                    $sql_nro_documento = "";
                }

                $txt_busqueda = trim($sql_lastname . $sql_nro_documento . $sql_nombre . $sql_nombre2 . $sql_lastname2 . $sql_fecha_nacimiento . $sql_typodocument . $sql_sexo);

                // Obtengo los datos solicitados con PRECISION EXACTA
                $setDatos = $this->obtenerDatossolr($txt_busqueda);


                // Si no hubo resultados exactos, extiendo la Busqueda por aproximación
                if (isset($setDatos) AND $setDatos['response']['result']['numFound'] == 0) {
                    // Obtengo los datos solicitados con PRECISION APROX.
                    $setDatos = $this->obtenerDatossolr($txt_busqueda, 0, 100000000, "", true);
                }

                $this->set('ResultadoPersonas', $setDatos);
                $this->set('busquedarealizada', "S");

                // Reenvio los datos a otra Vista para Continuar con el Alta
                $this->Session->write('ObraSocial', $this->data['OS']);
                $this->render('add2');
            }
        }

        for ($i = 0; $i <= 2; $i++) {
            $os[$i]['id'] = 0;
            $os[$i]['plan'] = '';
            $os[$i]['afiliado'] = '';
        }
        $x = 0;

        $insurances = $this->Insurance->find('list');

        if ($id_turno_paciente_tmp > 0) {
            $Turno = $this->Turn->read(null, $id_turno_paciente_tmp);
            if ($Turno['Turn']['person_id'] == 0 and ! empty($Turno['Turn']['nota_json'])) {
                $this->data['Person'] = json_decode($Turno['Turn']['nota_json'], true);
                $this->data['Person']['id'] = 0;
            }
        }



        $this->set('id_turno_paciente_tmp', $id_turno_paciente_tmp);
        $statepeople = $this->Person->Stateperson->find('list');

        $genders = $this->Person->Gender->find('list');
        $gruposanguineos = $this->Person->Gruposanguineo->find('list');
        $this->set(compact('statepeople', 'genders', 'sexes', 'typodocuments', 'gruposanguineos', 'insurances', 'os'));
    }

    function add2() {

        if (!empty($this->data)) {

            $this->Person->create();

            // Seteo datos que no vienen del Formulario
            $this->data['Client']['Client'][0] = $this->Session->read('ClientesUsuarioLogueado.id');
            $this->Person->set(array(
                'user_id' => $this->Auth->user('id'),
            ));

            if ($this->Person->save($this->data)) {
                $paciente_id = $this->Person->getLastInsertID();

                $this->Session->setFlash(__('La persona ha sido cargada', true));

                // Si tengo que convertir un Paciente Temporario en una Real
                if (!empty($this->data['Person']['id_turno_paciente_tmp'])) {

                    // Obtengo el Registro del Turno donde está el Paciente Temporal
                    $this->Turn->id = $this->data['Person']['id_turno_paciente_tmp'];

                    // Actualizo el Turno
                    $this->Turn->saveField('person_id', $this->Person->id);
                }


                /* ---------------------------------------------------------------------------- */
                /* Asigno las Insurances al Paciente  										  */
                /* ---------------------------------------------------------------------------- */
                $ObraSocial = $this->Session->read('ObraSocial');

                if (!empty($ObraSocial)) {
                    foreach ($ObraSocial AS $id_insu_aux) {

                        if ($id_insu_aux['id'] > 0) {
                            // Creo un Nuevo Registro
                            $this->InsurancesPerson->create();

                            $this->InsurancesPerson->set(array(
                                'insurance_id' => $id_insu_aux['id'],
                                'person_id' => $paciente_id,
                                'nombre_plan' => $id_insu_aux['plan'],
                                'nro_afiliado' => $id_insu_aux['afiliado']
                                    )
                            );
                            $this->InsurancesPerson->save();
                        }
                    }
                }


                // Se actualizan las Personas
                $this->actualizarPersonas();

                // Se actualizan los Turnos
                $this->requestAction('/turns/actualizarturnos');

                // Se actualizan los Registros del Dashboard
                $this->requestAction('/registros/actualizarRegistros');
            } else {
                $this->Session->setFlash(__('La persona no se ha cargado. Revise los errors.', true));
            }

            $this->redirect('/people/view/' . $this->Person->id);
            exit;
        }
    }

    function edit($id = null) {

        $this->_accede('modifica_paciente');

        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Invalid person', true));
            $this->redirect('/dashboards');
        }
        if (!empty($this->data)) {
            //pr($this->data);	die();
            //pr($_POST);	die();

            if (isset($_POST['eliminar_foto']) and $_POST['eliminar_foto'] == 'on') {
                $this->data['Person']['foto'] = '';
            } else {
                $foto = $_FILES['foto'];

                if ($foto['size'] > 0) {
                    $z = $foto['name'];
                    $NombreArchivo = $this->data['Person']['user_id'] . '-' . $this->data['Person']['id'] . '-' . $foto['name'];
                    $this->data['Person']['foto'] = $NombreArchivo;
                    move_uploaded_file($foto['tmp_name'], ROOT . DS . 'app' . DS . 'webroot' . DS . 'uploads' . DS . $NombreArchivo);
                }
            }

            if ($this->Person->save($this->data)) {
                $this->Session->setFlash(__('La persona ha sido modificada', true));

                /* ---------------------------------------------------------------------------- */
                /* Asigno las Insurances al Paciente  										  */
                /* ---------------------------------------------------------------------------- */

                // Borro todas las Relaciones Paciente / Insurances
                $this->InsurancesPerson->deleteAll(array(
                    'InsurancesPerson.person_id' => $this->data['Person']['id']
                        )
                );

                if (!empty($this->data['OS'])) {
                    foreach ($this->data['OS'] AS $id_insu_aux) {

                        if ($id_insu_aux['id'] > 0) {
                            // Creo un Nuevo Registro
                            $this->InsurancesPerson->create();

                            $this->InsurancesPerson->set(array(
                                'insurance_id' => $id_insu_aux['id'],
                                'person_id' => $this->data['Person']['id'],
                                'nombre_plan' => $id_insu_aux['plan'],
                                'nro_afiliado' => $id_insu_aux['afiliado']
                                    )
                            );
                            $this->InsurancesPerson->save();
                        }
                    }
                }


                // Se actualizan las Personas
                $this->actualizarPersonas();

                $this->redirect('/dashboards');
            } else {
                $this->Session->setFlash(__('La persona no ha sido modificada. Revise los datos ingresados.', true));
            }
        }
        if (empty($this->data)) {

            $this->loadModel('ClientsPerson');
            $client_id = $this->Session->read('ClientesUsuarioLogueado.id');
            $sql = "select * from clients_people where person_id = '$id' and client_id='$client_id'";

            $existe = $this->ClientsPerson->query($sql);

            if ($existe) {

                $this->Person->unbindModel(array('hasMany' => array(
                        'Evolution', 'Recomendation', 'PeoplePractice', 'PeopleProblem',
                        'PeopleRecomendation', 'Agenda', 'PeopleSign', 'PeopleVademecum', 'Person', 'Result', 'Turn'
                )));
                $this->data = $this->Person->read(null, $id);
            } else {
                $this->Session->setFlash(__('La persona solicitada no pertenece a este cliente.', true));
                $this->redirect('/dashboards');
                die();
            }
        }

//pr($this->data);		
        // Obtengo las Obras Sociales del Paciente
        $options = array('conditions' => array('InsurancesPerson.person_id' => $id));
        $insurances_paciente = $this->InsurancesPerson->find('all', $options);

        for ($i = 0; $i <= 2; $i++) {
            $os[$i]['id'] = 0;
            $os[$i]['plan'] = '';
            $os[$i]['afiliado'] = '';
        }
        $x = 0;

        foreach ($insurances_paciente as $ip) {
            $os[$x]['id'] = $ip['InsurancesPerson']['insurance_id'];
            $os[$x]['plan'] = $ip['InsurancesPerson']['nombre_plan'];
            $os[$x]['afiliado'] = $ip['InsurancesPerson']['nro_afiliado'];
            $x++;
        }
//		sort($os);
//pr($os);

        $insurances = $this->Insurance->find('list');

        // Calculo la Edad de la Persona
        $edad = $this->obtenerEdad($this->data['Person']['fecha_nacimiento']);
        $this->set('edad', $edad);

        $statepeople = $this->Person->Stateperson->find('list');
        $genders = $this->Person->Gender->find('list');
        $sexes = $this->Person->Sex->find('list');
        $typodocuments = $this->Person->Typodocument->find('list', array('order' => array('Typodocument.name')));
        $gruposanguineos = $this->Person->Gruposanguineo->find('list');
        $this->set(compact('statepeople', 'genders', 'sexes', 'typodocuments', 'gruposanguineos', 'insurances', 'os'));
    }

    function autoComplete() {
        //Partial strings will come from the autocomplete field as
        //$this->data['Post']['subject'] 

        $txt_busqueda = $this->params['url']['q'];

        $setDatos = $this->Person->query(
                "SELECT 
				Person.id, Person.id,Person.name,Person.name2, Person.name3, Person.lastname, Person.lastname2, Person.lastname3
			FROM 
				people AS Person
			WHERE
				Person.name <> '' AND
				Person.name IS NOT NULL AND
				Person.lastname <> '' AND 
				Person.lastname IS NOT NULL AND
				(
					Person.name LIKE '%" . $txt_busqueda . "%' OR 
					Person.name LIKE '" . $txt_busqueda . "%' OR 
					Person.name LIKE '%" . $txt_busqueda . "' OR 
					Person.name = '" . $txt_busqueda . "' OR

					Person.name2 LIKE '%" . $txt_busqueda . "%' OR 
					Person.name2 LIKE '" . $txt_busqueda . "%' OR 
					Person.name2 LIKE '%" . $txt_busqueda . "' OR 
					Person.name2 = '" . $txt_busqueda . "' OR

					Person.name3 LIKE '%" . $txt_busqueda . "%' OR 
					Person.name3 LIKE '" . $txt_busqueda . "%' OR 
					Person.name3 LIKE '%" . $txt_busqueda . "' OR 
					Person.name3 = '" . $txt_busqueda . "' OR

					Person.lastname LIKE '%" . $txt_busqueda . "%' OR 
					Person.lastname LIKE '" . $txt_busqueda . "%' OR 
					Person.lastname LIKE '%" . $txt_busqueda . "' OR 
					Person.lastname = '" . $txt_busqueda . "' OR

					Person.lastname2 LIKE '%" . $txt_busqueda . "%' OR 
					Person.lastname2 LIKE '" . $txt_busqueda . "%' OR 
					Person.lastname2 LIKE '%" . $txt_busqueda . "' OR 
					Person.lastname2 = '" . $txt_busqueda . "' OR

					Person.lastname3 LIKE '%" . $txt_busqueda . "%' OR 
					Person.lastname3 LIKE '" . $txt_busqueda . "%' OR 
					Person.lastname3 LIKE '%" . $txt_busqueda . "' OR 
					Person.lastname3 = '" . $txt_busqueda . "' 
				)
			ORDER BY 
				lastname, name;
			"
        );

        if (count($setDatos) == 0) {
            $setDatos = array();
        }

        $this->set('personas', $setDatos);
        $this->set('txt_busqueda', $txt_busqueda);
        $this->layout = 'ajax';
    }

    function search() {
        $this->_accede('busca_paciente');

        $sexes = $this->Person->Sex->find('list');
        $typodocuments = $this->Person->Typodocument->find('list', array('order' => array('Typodocument.name')));

        if (!empty($this->data)) {

            // Valido los campos ingresados
            if (!empty($this->data['Person']['name'])) {
                $sql_nombre = " name:" . urlencode($this->data['Person']['name']);
            } else {
                $sql_nombre = "";
            }

            if (!empty($this->data['Person']['name2'])) {
                $sql_nombre2 = " name2:" . urlencode($this->data['Person']['name2']);
            } else {
                $sql_nombre2 = "";
            }

            if (!empty($this->data['Person']['lastname'])) {
                $sql_lastname = "lastname:" . urlencode($this->data['Person']['lastname']);
            } else {
                $sql_lastname = "";
            }

            if (!empty($this->data['Person']['lastname2'])) {
                $sql_lastname2 = " lastname2:" . urlencode($this->data['Person']['lastname2']);
            } else {
                $sql_lastname2 = "";
            }

            if (!empty($this->data['Person']['fecha_nacimiento']['year']) AND ! empty($this->data['Person']['fecha_nacimiento']['month']) AND ! empty($this->data['Person']['fecha_nacimiento']['day'])) {
                $sql_fecha_nacimiento = " fecha_nacimiento:" . urlencode($this->data['Person']['fecha_nacimiento']['year'] . "-" . $this->data['Person']['fecha_nacimiento']['month'] . "-" . $this->data['Person']['fecha_nacimiento']['day']);
            } else {
                $sql_fecha_nacimiento = "";
            }

            if (!empty($this->data['Person']['typodocument_id'])) {
                $sql_typodocument = " tipo_documento:" . urlencode($typodocuments[$this->data['Person']['typodocument_id']]);
            } else {
                $sql_typodocument = "";
            }

            if (!empty($this->data['Person']['sex_id'])) {
                $sql_sexo = " sexo:" . urlencode($sexes[$this->data['Person']['sex_id']]);
            } else {
                $sql_sexo = "";
            }

            if (!empty($this->data['Person']['nro_documento'])) {
                $sql_nro_documento = " nro_documento:" . urlencode($this->data['Person']['nro_documento']);
            } else {
                $sql_nro_documento = "";
            }

            $txt_busqueda = trim($sql_lastname . $sql_nro_documento . $sql_nombre . $sql_nombre2 . $sql_lastname2 . $sql_fecha_nacimiento . $sql_typodocument . $sql_sexo);

            // Obtengo los datos solicitados con PRECISION EXACTA
            $setDatos = $this->obtenerDatossolr($txt_busqueda);

            // Si no hubo resultados exactos, extiendo la Busqueda por aproximación
            if (isset($setDatos) AND $setDatos['response']['result']['numFound'] == 0) {
                // Obtengo los datos solicitados con PRECISION APROX.
                $setDatos = $this->obtenerDatossolr($txt_busqueda, 0, 100000000, "", true);
            }

            $this->set('ResultadoPersonas', $setDatos);
            $this->set('busquedarealizada', "S");
        }


        $this->set(compact('sexes', 'typodocuments'));
    }

    function find() {
        $this->layout = 'ventana_flotante';

        // Si se realizo una Busqueda
        if (!empty($this->data)) {

            $txt_busqueda = $this->data['Person']['name'];
            $txt_busqueda = "lastname:$txt_busqueda lastname2:$txt_busqueda lastname3:$txt_busqueda name:$txt_busqueda name2:$txt_busqueda name3:$txt_busqueda";

            // Obtengo los datos solicitados con PRECISION EXACTA
            $setDatos = $this->obtenerDatossolr($txt_busqueda);

            // Si no hubo resultados exactos, extiendo la Busqueda por aproximación
            if (isset($setDatos) AND $setDatos['response']['result']['numFound'] == 0) {
                // Obtengo los datos solicitados con PRECISION APROX.
                $setDatos = $this->obtenerDatossolr($txt_busqueda, 0, 100000000, "", true);
            }

            $this->set('ResultadoPersonas', $setDatos);
            $this->set('busquedarealizada', "S");
        }
    }

    function mostrartags($id_paciente = null) {

        if (!$id_paciente) {
            exit;
        }

        $tags_paciente = $this->Person->query(
                "SELECT 
				Problem.name, Tag.name
			FROM 
				people_problems AS PeopleProblem 
				INNER JOIN tags AS Tag ON Tag.id = PeopleProblem.tag_id
				INNER JOIN problems AS Problem ON Problem.id = PeopleProblem.problem_id
			WHERE
				PeopleProblem.person_id =  '$id_paciente'
			ORDER BY 
				Problem.name
			"
        );

        $this->set('tags_paciente', $tags_paciente);
        $this->layout = 'ajax';
    }

    function totalpersonas() {

        // Obtengo los datos solicitados
        $setDatos = $this->obtenerDatossolr("*:*");

        $this->autoRender = false;

        return $setDatos['response']['result']['numFound'];
    }

    function obtenerDatossolr($txt_busqueda = null, $comienzo = 0, $paginar_de_a = 20, $sort = "", $activar_cercania = false) {

        if (!$txt_busqueda) {
            return array();
        } else {
            // import XML class 
            App::import('Xml');


            if ($activar_cercania == true) {
                // Agrego caracter ~ al final de cada palabra para habilitar la proximity de la busqueda
                //$txt_busqueda = str_replace(" ", "~ ", $txt_busqueda); 
                //$txt_busqueda .= "~";

                $txt_busqueda = str_replace(" nro_documento:", "~ nro_documento:", $txt_busqueda);
                $txt_busqueda = str_replace(" name:", "~ name:", $txt_busqueda);
                $txt_busqueda = str_replace(" fecha_nacimiento", "~ fecha_nacimiento", $txt_busqueda);
            }

            if (!empty($sort)) {
                $str_sort = "&sort=" . $sort;
            } else {
                $str_sort = "";
            }

            // Leemos nuestro archivo XML
            $url_solr = 'http://localhost:8080/solr/core1/select?indent=on&version=2.2&q=' . urlencode(strtolower($txt_busqueda)) . '&fq=%2Bcat%3Aperson+%2Bid_cliente%3A' . $this->Session->read('ClientesUsuarioLogueado.id') . '&start=' . $comienzo . $str_sort . '&rows=' . $paginar_de_a . '&fl=cat%2Cfecha_nacimiento%2Cid%2Clastname%2Clastname2%2Clastname3%2Cname%2Cname2%2Cname3%2Cnro_documento%2Csexo%2Ctipo_documento%2Cscore&qt=standard&wt=standard&explainOther=&hl.fl=';

            $xml_content = & new XML($url_solr);

            // Para facilidad de uso convertimos nuestro archivo XML en un arreglo legible.
            return $xml_content->toArray(false);
        }
    }

    function actualizarPersonas() {
        // Vacio el Listado de Pacientes del Cliente Logueado
        Cache::delete('lst_pacientes_quick_' . $this->Session->read('ClientesUsuarioLogueado.id'));

        Cache::delete('pacientescache_' . $this->Session->read('ClientesUsuarioLogueado.id'));


        /* ==================================================================== */
        /* Indexo las Personas en solr										    */
        /* ==================================================================== */

        // import XML class 
        App::import('Xml');

        // Leemos nuestro archivo XML
//			$url_solr = 'http://localhost:8080/solr/core1/dataimport?command=full-import&clean=true';  // Indexacion Full
        $url_solr = 'http://localhost:8080/solr/core1/dataimport?command=delta-import'; // Indexacion Delta
        $xml_content = & new XML($url_solr);

        /* ==================================================================== */

        $this->autoRender = false;
    }

    // GETTER PACIENTES DE UN CLIENTE
    function getjsonpacientes() {

        $client_id = $this->Session->read('ClientesUsuarioLogueado.id');

        if (!$json_output = Cache::read('lst_pacientes_quick_' . $client_id)) {

            $sql = "SELECT Person.id, Person.name, Person.name2, Person.name3, Person.lastname, Person.lastname2, Person.lastname3, 
							Person.fecha_nacimiento, InsurancePeople.nombre_plan, InsurancePeople.nro_afiliado
					FROM
						people AS Person
						INNER JOIN clients_people AS t2 ON t2.person_id = Person.id
						LEFT JOIN insurances_people AS InsurancePeople ON InsurancePeople.person_id = Person.id
					WHERE
						t2.client_id = '$client_id' AND Person.stateperson_id = 1
					ORDER BY
						Person.lastname, Person.lastname2, Person.lastname3, Person.name, Person.name2, Person.name3;";

            $setDatos_aux = $this->Person->query($sql);

            $contador = 0;
            $cada_registro = "";

            foreach ($setDatos_aux AS $registro) {
                $contador++;

                if ($contador <> 1) {
                    $cada_registro .= ',';
                }

                $apellido_aux = trim($registro['Person']['lastname'] . " " . $registro['Person']['lastname2'] . "" . $registro['Person']['lastname3']);
                $nombre_aux = trim($registro['Person']['name'] . " " . $registro['Person']['name2'] . "" . $registro['Person']['name3']);
                $nro_afiliado_aux = trim($registro['InsurancePeople']['nro_afiliado']);
                $edad_aux = $this->obtenerEdad($registro['Person']['fecha_nacimiento']);

                $cada_registro .= '{"name": "' . $apellido_aux . ", " . $nombre_aux . " (" . $edad_aux['edad'] . $edad_aux['unidad_edad'] . ") <div>$nro_afiliado_aux</div>" . '","id": ' . $registro['Person']['id'] . '}';
            }

            $json_output = '{"person":[' . $cada_registro . ']}';

            Cache::write('lst_pacientes_quick_' . $this->Session->read('ClientesUsuarioLogueado.id'), $json_output);
        }

        $this->autoRender = false;
        return $json_output;
    }

    function listado($comienzo = 0, $paginar_de_a = 20) {
        $this->_accede('lista_paciente');
    }

    // LISTADO PAGINADO DE PACIENTES
    function obtenerlistadopacientes($comienzo = 0, $paginar_de_a = 20) {
        $this->layout = 'ajax';

        $txt_busqueda = "*:*";

        // Obtengo los datos solicitados
        $setDatos = $this->obtenerDatossolr($txt_busqueda, $comienzo, $paginar_de_a, "lastname+asc");


        if ($setDatos) {
            // Si tiene más de 1 Registro
            if ($setDatos['response']['result']['numFound'] > 1) {

                $this->Person->unbindModel(array(
                    'hasMany' => array('Evolution', 'Recomendation', 'PeoplePractice', 'PeopleProblem', 'PeopleRecomendation', 'Agenda', 'PeopleSign', 'PeopleVademecum', 'Person', 'Result', 'Turn'),
                    'belongsTo' => array('Stateperson', 'Gender', 'Sex', 'Typodocument', 'Gruposanguineo'),
                    'hasAndBelongsToMany' => array('Client'),
                ));

                foreach ($setDatos['response']['result']['doc'] as $clave => $valor) {
                    $id_paciente = $valor['str']['2']['value'];
                    $paciente = $this->Person->read(null, $id_paciente);
                    $estado = $paciente['Person']['stateperson_id'];
                    $setDatos['response']['result']['doc'][$clave]['str']['12']['name'] = 'stateperson_id';
                    $setDatos['response']['result']['doc'][$clave]['str']['12']['value'] = $estado;
                }
            } else { // Si tiene exactamente 0 o 1 Registro
                if ($setDatos['response']['result']['numFound'] != 0) {
                    $id_paciente = $setDatos['response']['result']['doc']['str']['2']['value'];
                    $paciente = $this->Person->read(null, $id_paciente);
                    $estado = $paciente['Person']['stateperson_id'];
                    $setDatos['response']['result']['doc']['str']['12']['name'] = 'stateperson_id';
                    $setDatos['response']['result']['doc']['str']['12']['value'] = $estado;
                }
            }
        }

        $this->set('ResultadoPersonas', $setDatos);
    }

    // Exportar csz listado de Pacientes
    function exportar_listado_pacientes() {
        $this->layout = '';

        $client_id = $this->Session->read('Client.id');

        $this->ClientsPerson->unbindModel(array('belongsTo' => array('Client')));

        $Pacientes = $this->ClientsPerson->find('all', array(
            'conditions' => array('client_id' => $client_id),
            'order' => 'Person.lastname ASC, Person.name ASC'
        ));


        $nombre_temporal = 'MisPacientes al ' . date("Y-m-d-Hi") . '.csv';
        $destino = ROOT . DS . 'app' . DS . 'webroot' . DS . 'temp/' . $nombre_temporal;

        $fp = fopen("$destino", 'w');

        $renglon = "Apellido y Nombre;Telefono;Email;Estado\n";

        fwrite($fp, $renglon);

        foreach ($Pacientes as $b) {
            if ($b['Person']['stateperson_id'] == 1) {
                $estado = 'Activo';
            } else {
                $estado = 'Inactivo';
            }
            $renglon = "{$b['Person']['full_name']};{$b['Person']['telefono']};{$b['Person']['email']};$estado\n";
            fwrite($fp, $renglon);
        }

        fclose($fp);
        $file = $this->webroot . 'temp/' . $nombre_temporal;


        header("Content-disposition: attachment; filename=$nombre_temporal");
        header("Content-type: application/csv");
        readfile($destino);
        unlink($destino);
    }

    // Obtengo la Edad de un Paciente
    function obtenerEdad($fecha_nacimiento = null, $return_data = "Y") {

        // Si no esta definida la Fecha de nacimiento
        if (!$fecha_nacimiento) {
            return "-";
        }

        // Calculo la edad expresada en AÑOS del Paciente
        if ($return_data == "Y") {
            // Calculo la Edad de la Persona
            $mktime_hoy = date("Y");
            $mktime_fecha_nacimiento = date("Y", strtotime($fecha_nacimiento));

            if (date("n", strtotime($fecha_nacimiento)) > date("n")) { // Si todavía no cumplio años
                $mktime_fecha_nacimiento++;
            } elseif (date("n", strtotime($fecha_nacimiento)) == date("n") AND date("j", strtotime($fecha_nacimiento)) > date("j")) {
                $mktime_fecha_nacimiento++;
            }

            $edad = $mktime_hoy - $mktime_fecha_nacimiento;
            $unidad_edad = "años";
        }

        // Calculo la edad expresada en DIAS del Paciente / Si la edad en años es 0, la paso a días
        if ($return_data == "D" OR $edad == 0) {
            // Calculo la Edad de la Persona
            $mktime_hoy = strtotime("now");
            $mktime_fecha_nacimiento = strtotime($fecha_nacimiento);

            $edad = round(($mktime_hoy - $mktime_fecha_nacimiento) / 86400);
            $unidad_edad = "días";
        }

        $array_edad['edad'] = $edad;
        $array_edad['unidad_edad'] = $unidad_edad;

        return $array_edad;
    }

    // Exportador a PDF
    function viewPdf($id_paciente = null, $fecha = '', $solo_form = 0) {

        $this->_accede('imprime_hce');

        $this->Person->recursive = 0;

        if (!empty($fecha)) {
            list($dia, $mes, $ano) = explode('-', $fecha);
            $fecha = $ano . '-' . $mes . '-' . $dia;
        }

        if (!$id_paciente) {
            exit;
        }

        // Verifico que el Paciente corresponda al Cliente
        $valido_cliente = $this->Person->ClientsPerson->find('first', array(
            'conditions' => array(
                'ClientsPerson.person_id' => $id_paciente,
                'ClientsPerson.client_id' => $this->Session->read('ClientesUsuarioLogueado.id'),
            ),
                ));

        if (!empty($valido_cliente)) {
            $datos_persona = $this->Person->read(null, $id_paciente);
        } else {
            exit;
        }

        // Calculo la Edad de la Persona
        $edad = $this->obtenerEdad($datos_persona['Person']['fecha_nacimiento']);
        $this->set('edad', $edad);

        $this->set('person', $datos_persona);

        if ($solo_form == 1) {
            //$this->set('fichas',         $this->requestAction("/registros/ObtenerRegistros/$id_paciente/10/0/$fecha") );

            $historial_completo = array_merge(
                    $this->requestAction("/registros/ObtenerRegistros/$id_paciente/10/0/$fecha")
            );
        } else {
            // $this->set('evoluciones',    $this->requestAction("/registros/ObtenerRegistros/$id_paciente/1/0/$fecha") );
            // $this->set('problemas',      $this->requestAction("/registros/ObtenerRegistros/$id_paciente/4/0/$fecha") );
            // $this->set('signos',         $this->requestAction("/registros/ObtenerRegistros/$id_paciente/6/0/$fecha") );
            // $this->set('practicas',      $this->requestAction("/registros/ObtenerRegistros/$id_paciente/3/0/$fecha") );
            // $this->set('resultados',     $this->requestAction("/registros/ObtenerRegistros/$id_paciente/5/0/$fecha") );
            // $this->set('vademecum',      $this->requestAction("/registros/ObtenerRegistros/$id_paciente/2/0/$fecha") );
            // $this->set('turnos',         $this->requestAction("/registros/ObtenerRegistros/$id_paciente/7/0/$fecha") );
            // $this->set('recomendaciones',$this->requestAction("/registros/ObtenerRegistros/$id_paciente/8/0/$fecha") );
            // $this->set('fichas',         $this->requestAction("/registros/ObtenerRegistros/$id_paciente/10/0/$fecha") );

            $historial_completo = array_merge(
                    $this->requestAction("/registros/ObtenerRegistros/$id_paciente/1/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/4/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/6/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/3/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/5/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/2/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/7/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/8/0/$fecha"), $this->requestAction("/registros/ObtenerRegistros/$id_paciente/10/0/$fecha")
            );
        }

        // Si hay varios elementos
        if (count($historial_completo) > 1) {

            // Obtain a list of columns for latest use for order
            foreach ($historial_completo as $key => $row) {
                $array_fecha[$key] = $row['fecha'];
                $array_modelo[$key] = $row['modelo'];
            }

            // Sort the data with volume descending, modelo ascending
            // Add $historial_completo as the last parameter, to sort by the common key
            array_multisort($array_fecha, SORT_DESC, $array_modelo, SORT_ASC, $historial_completo);
        }

        $this->set('historial_completo', $historial_completo);


        $this->layout = 'pdf'; //this will use the pdf.ctp layout 
        $this->render();
    }

    function obtenerFinanciadores($id_paciente = null) {

        if (!$id_paciente) {
            exit;
        }

        // Obtengo las Obras Sociales del Paciente
        $options = array('conditions' => array('InsurancesPerson.person_id' => $id_paciente));
        $insurances_paciente = $this->InsurancesPerson->find('all', $options);

        return $insurances_paciente;
    }

    function DesactivarPaciente($id = null) {

        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Invalid person', true));
            $this->redirect('/dashboards');
        } else {
            $paciente = $this->Person->read(null, $id);
            $paciente['Person']['stateperson_id'] = 2;

            // Se actualizan las Personas y el listado Rapido de Pacientes
            $this->actualizarPersonas();

            $this->Person->save($paciente['Person']);
            $this->redirect(array('action' => 'listado'));
            die();
        }
    }

    function exportprescription($prescription_id = 0) {
        //---------------------------------------------------------------------
        // Exporta la prescripcion realizada: tipo_prescripcion: practicas / medicamentos
        //---------------------------------------------------------------------	
        $client_id = $this->Session->read('ClientesUsuarioLogueado.id');
        $user_id = $this->Auth->user('id');

        $this->_accede('imprime_hce');

        $this->loadModel('Recetario');
        $Recetario = $this->Recetario->find('first', array(
            'conditions' => array(
                'Recetario.client_id' => $client_id,
                'Recetario.user_id' => $user_id
            ),
                ));
        if (!empty($Recetario)) {
            $encabezado = trim(strip_tags($Recetario['Recetario']['encabezado']));
            $pie = trim(strip_tags($Recetario['Recetario']['pie'])) . '<br/>';
        } else {
            $encabezado = '';
            $pie = '';
        }
        $this->set('encabezado', $encabezado);
        $this->set('pie', $pie);
        $this->set('prescription_id', $prescription_id);


        $this->loadModel('Prescription');
        $Prescription = $this->Prescription->find('first', array(
            'conditions' => array(
                'Prescription.client_id' => $client_id,
                'Prescription.user_id' => $user_id,
                'Prescription.id' => $prescription_id
            ),
                ));

        //------------------------------------------------------------------
        //                                             Registro del Paciente
        //------------------------------------------------------------------
        $paciente_id = $Prescription['Prescription']['person_id'];
        $Paciente = $this->Person->read(null, $paciente_id);


        $client_tz = new DateTimeZone($_SESSION['Client']['timezone']);

        if ($Prescription['Prescription']['tipo_prescripcion'] == 'practicas') {
            //-----------------------------------------------------------------------------
            //                                                           Si es una practica
            //-----------------------------------------------------------------------------
            $this->set('TipoPrescripcion', 'Prescripcion de Practicas');
            $this->loadModel('PeoplePractice');
            $this->PeoplePractice->unbindModel(array('belongsTo' => array('Client', 'Person', 'User', 'Staterecord')));
            $Practicas = $this->PeoplePractice->find('all', array(
                'conditions' => array(
                    'PeoplePractice.prescription_id' => $prescription_id
                ),
                    ));
            $Renglones = array();
            //-------------------------------------- Armo el array de detalle para hacer el pdf
            foreach ($Practicas as $key => $value) {
                $r = array();

                // Cambio la fecha segun el TimeZone del Cliente
                $x = substr($value['PeoplePractice']['fecha'], 0, 10);
                list($ano, $mes, $dia) = explode('-', $x);
                $fecha = $dia . '-' . $mes . '-' . $ano;
                $date = new DateTime($fecha);
                $date->setTimezone($client_tz);
                $r['fecha'] = $date->format('d-m-Y');

                $r['comentario'] = $value['PeoplePractice']['comments'];
                $r['item_id'] = $value['PeoplePractice']['practice_id'];
                $r['item_name'] = $value['Practice']['name'];
                $Renglones[] = $r;
            }
        } elseif ($Prescription['Prescription']['tipo_prescripcion'] == 'medicamentos') {
            //-----------------------------------------------------------------------------
            //                                                         Si es un medicamento
            //-----------------------------------------------------------------------------
            $this->set('TipoPrescripcion', 'Prescripcion de Medicamentos');
            $this->loadModel('PeopleVademecum');
            $this->PeopleVademecum->unbindModel(array('belongsTo' => array('Client', 'Person', 'User', 'Staterecord')));
            $Medicamentos = $this->PeopleVademecum->find('all', array(
                'conditions' => array(
                    'PeopleVademecum.prescription_id' => $prescription_id
                ),
                    ));

            //-------------------------------------- Chequea si usa el vademecum generico
            foreach ($Medicamentos as $key => $value) {

                if ($value['PeopleVademecum']['nombre_vademecum'] != 'vademecums') {
                    unset($Medicamentos[$key]['Vademecum']);
                    $vademecum_usado = $value['PeopleVademecum']['nombre_vademecum'];
                    $vademecum_id = $value['PeopleVademecum']['vademecum_id'];
                    $sql = "select name, presentacion from $vademecum_usado as vademecum where id='$vademecum_id'";
                    $xx = $this->Sign->query($sql);
                    //pr($xx);
                    $Medicamentos[$key]['Vademecum']['name'] = $xx[0]['vademecum']['name'] . ' ' . $xx[0]['vademecum']['presentacion'];
                }
            }

            //-------------------------------------- Armo el array de detalle para hacer el pdf
            $Renglones = array();
            foreach ($Medicamentos as $key => $value) {
                $r = array();

                // Cambio la fecha segun el TimeZone del Cliente
                $x = substr($value['PeopleVademecum']['fecha_inicio'], 0, 10);
                list($ano, $mes, $dia) = explode('-', $x);
                $fecha = $dia . '-' . $mes . '-' . $ano;
                $date = new DateTime($fecha);
                $date->setTimezone($client_tz);
                $inicio = $date->format('d-m-Y');

                if ($value['PeopleVademecum']['fecha_inicio'] != $value['PeopleVademecum']['fecha_fin']) {
                    $x = substr($value['PeopleVademecum']['fecha_fin'], 0, 10);
                    list($ano, $mes, $dia) = explode('-', $x);
                    $fecha = $dia . '-' . $mes . '-' . $ano;
                    $date = new DateTime($fecha);
                    $date->setTimezone($client_tz);
                    $fin = ' al ' . $date->format('d-m-Y');
                } else {
                    $fin = '';
                }


                $r['fecha'] = $inicio . $fin;
                $r['comentario'] = $value['PeopleVademecum']['observaciones'];
                $r['item_id'] = $value['PeopleVademecum']['nombre_vademecum'] . '-' . $value['PeopleVademecum']['vademecum_id'];
                $r['item_name'] = $value['Vademecum']['name'];

                if ($value['PeopleVademecum']['cantidad_indicada'] > 0) {
                    $cantidad_indicada = "Cantidad:" . $value['PeopleVademecum']['cantidad_indicada'];
                } else {
                    $cantidad_indicada = '';
                }

                $unidad_indicada = "Unidad:" . $value['Unidad']['name'];
                $via = "Via:" . $value['Via']['name'];
                if ($value['PeopleVademecum']['frecuencia'] > 0) {
                    $frecuencia = "Frecuencia:" . $value['PeopleVademecum']['frecuencia'] . ' ' . $value['Frecuencia']['name'];
                } else {
                    $frecuencia = '';
                }

                if ($value['PeopleVademecum']['typeindicacionmedicamento_id'] > 0) {
                    $indicacion = "Indicacion:" . $value['Typeindicacionmedicamento']['name'];
                } else {
                    $indicacion = '';
                }

                $r['detalle'] = $cantidad_indicada . ' ' . $unidad_indicada . ' ' . $via . ' ' . $frecuencia . ' ' . $indicacion;

                $Renglones[] = $r;
            }
        }

        //pr($_SESSION);
        // Calculo la Edad de la Persona
        $edad = $this->obtenerEdad($Paciente['Person']['fecha_nacimiento']);
        $this->set('edad', $edad);

        $this->set('person', $Paciente);

        $this->set('historial_completo', $Renglones);

        $this->layout = 'pdf'; //this will use the pdf.ctp layout 
        $this->render();
    }

}

?>